#include "processBar.h"

//const char *lable = "|/-\\";

// 进度条第一版-无参
//void Processbar()
//{
//    char bar[NUM];
//    memset(bar, '\0', sizeof(bar));
//    int cnt = 0;
//    int len = strlen(lable);
//    
//    while(cnt <= TOP)
//    {
//        printf("[%-100s][%d%%][%c]\r",bar,cnt, lable[cnt%len]);
//        fflush(stdout);
//        bar[cnt++] = BODY;
//        
//        if(cnt < TOP) bar[cnt] = RIGHT;
//        usleep(50000);
//    }
//    printf("\n");
//}

// 进度条第一版-带参
//void Processbar(int speed)
//{
//    char bar[NUM];
//    memset(bar, '\0', sizeof(bar));
//    int cnt = 0;
//    int len = strlen(lable);
//   
//    while(cnt <= TOP)
//    {
//        printf("[%-100s][%d%%][%c]\r",bar,cnt, lable[cnt%len]);
//
//        fflush(stdout);
//        bar[cnt++] = BODY;
//        
//        if(cnt < TOP) bar[cnt] = RIGHT;
//        usleep(speed);
//    }
//    printf("\n");
//}


//////////////////////////////////////////////////////

// 进度条第二版-单进度执行
// 进度条是如何被调用的？

// const char *lable = "|/-\\";
// char bar[NUM] = {0};
// 
// void Processbar(int rate)
// {
//     if(rate<0 || rate>100)  return;
//     int len = strlen(lable);
//     printf("[%-100s][%d%%][%c]\r",bar, rate, lable[rate%len]);
//     fflush(stdout);
//     bar[rate++] = BODY;
//     if(rate < TOP)  bar[rate] = RIGHT;
//}


//////////////////////////////////////////////////////

// 进度条第三版-回调显示
// 初始化bar的问题
const char *lable = "|/-\\";
char bar[NUM] = {0};

//颜色显示
#define CYAN "\033[0;35;35m"
#define NONE "\033[m"

void Processbar(int rate)
{
    if(rate<0 || rate>100)  return;
    int len = strlen(lable);
    printf(CYAN"[%-100s]"NONE"[%d%%][%c]\r",bar, rate, lable[rate%len]);
    fflush(stdout);
    bar[rate++] = BODY;
    if(rate < TOP)  bar[rate] = RIGHT;
}

void Init()
{
    memset(bar, '\0', sizeof(bar));
}






